import {
    computed,
    observable
} from 'mobx'

class Store {
    @observable array = [];
    @observable obj = {};
    @observable map = new Map();
    // 会自动识别，不用手动区分可观察还是间接观察
    @observable string = 'hello';
    @observable number = 20;
    @observable bool = false;
}

// computed
// 将其他可观察数据以用户想要的方式组合起来变成一个新的可观察数据
const store = new Store();

const computedString = computed(function () {
    return store.string + '/' + store.number + '/'
})

// console.log(computedString); // ComputedValue 对象
// console.log(computedString.get()); // hello/20/

// 为了观察到 computedString 的变化，需要使用 observe 方法
// 需要函数入参，change存储了修改前后变量的值
computedString.observe(function (change) {
    console.log(change.newValue);
})

store.string = 'world'
// string发生了变化：world/20/
store.number = 30
// number发生了变化：world/30/

// console.log(computedString.get());